﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MigColetaMinMax.Entidades
{
    public class Leitura
    {
        public string SeqLeitura { get; set; }
        public string Endereco { get; set; }
        public string Fase { get; set; }
        public string Medidor { get; set; }
        public string Constante { get; set; }
        public string LeituraAnterior { get; set; }
        public string LeituraAtual { get; set; }
        public string Classe { get; set; }
        public string LeitMin { get; set; }
        public string LeitMax { get; set; }
        public string Ocorrencia1 { get; set; }
        public string Ocorrencia2 { get; set; }
        public string Ocorrencia3 { get; set; }
        public string Ocorrencia4 { get; set; }
        public string DataLeitura { get; set; }
        public string HoraLeitura { get; set; }
        public string Uc { get; set; }
        public string Fixo1 { get; set; }
        public string Fixo2 { get; set; }
        public string Fixo3 { get; set; }
        public string Fixo4 { get; set; }
        public string Fixo5 { get; set; }
        public string Fixo6 { get; set; }
        public string Nome { get; set; }
        public string IdRegiao { get; set; }
        public string Ligado { get; set; }
        public string IdMotivoDeslig { get; set; }
        public string OcorrenciaAnt { get; set; }
        public string IdRota { get; set; }
        public int AcertosLeit { get; set; }
        public string MedidorRetirado { get; set; }
        public string Complemento { get; set; }
        public string Latitude { get; set; }
        public string Longitude { get; set; }
        public string LatDegress { get; set; }
        public string LngDegress { get; set; }
        public string UTM_x { get; set; }
        public string UTM_y { get; set; }
        public string MedidorAlt { get; set; }
        public string Fabricante { get; set; }
        public string Marca { get; set; }
        public string Modelo { get; set; }
        public int IdLeit { get; set; }
        public DateTime DtHrSat { get; set; }
        public string IdFoto { get; set; }
        public byte[] Foto { get; set; }

        public Leitura() { }

        /// <summary>
        /// Obtém a leitura referente a uma linha do arquivo de Leitura gerado para o diretório do leiturista.
        /// </summary>
        /// <param name="linha">String referente a linha.</param>
        /// <returns>Instância de leitura.</returns>
        public Leitura getLeituraToFileSource(string linha)
        {
            int acerto = 0;
            if (string.IsNullOrWhiteSpace(linha))
                throw new Exception("O arquivo de leitura contém registro(s) nulo ou vazio!");

            string[] source = linha.Split('|');

            Leitura leitura = new Leitura();
            leitura.SeqLeitura = source[0];
            leitura.Endereco = source[1];
            leitura.Fase = source[2];
            leitura.Medidor = source[3];
            leitura.Constante = source[4];
            leitura.LeituraAnterior = source[5];
            leitura.LeituraAtual = source[6];
            leitura.Classe = source[7];
            leitura.LeitMin = source[8];
            leitura.LeitMax = source[9];
            leitura.Ocorrencia1 = source[10];
            leitura.Ocorrencia2 = source[11];
            leitura.Ocorrencia3 = source[12];
            leitura.Ocorrencia4 = source[13];
            leitura.DataLeitura = source[14];
            leitura.HoraLeitura = source[15];
            leitura.Uc = source[16];
            leitura.Fixo1 = source[17];
            leitura.Fixo2 = source[18];
            leitura.Fixo3 = source[19];
            leitura.Fixo4 = source[20];
            leitura.Fixo5 = source[21];
            leitura.Fixo6 = source[22];
            leitura.Nome = source[23];
            leitura.IdRegiao = source[24];
            leitura.Ligado = source[25];
            leitura.IdMotivoDeslig = source[26];
            leitura.OcorrenciaAnt = source[27];
            leitura.IdRota = source[28];
            int.TryParse(source[29], out acerto);
            leitura.AcertosLeit = acerto;
            leitura.MedidorRetirado = source[30];
            leitura.Complemento = source[31];
            leitura.Latitude = source[32];
            leitura.Longitude = source[33];
            leitura.LatDegress = source[34];
            leitura.LngDegress = source[35];
            leitura.UTM_x = source[36];
            leitura.UTM_y = source[37];
            leitura.MedidorAlt = source[38];
            leitura.Fabricante = source[39];
            leitura.Marca = source[40];
            leitura.Modelo = source[41];
            if (!string.IsNullOrWhiteSpace(source[42]))
                leitura.DtHrSat = DateTime.Parse(source[42]);
            if (!string.IsNullOrWhiteSpace(source[43]))
                leitura.IdFoto = source[43];

            return leitura;
        }
    }
}
